home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / dmenu.lha / Source.S < prev   
Encoding:
Text File  |  1990-09-13  |  50.0 KB  |  1,734 lines

  1.     section skdfj,code_C
  2. bplasize    =    (40*380*2)
  3. bpla1        =    $60000
  4. bpla2        =    bpla1+40
  5. bplbsize    =    (40*290)
  6. bplb1        =    bpla1+bplasize
  7. bplb2        =    bplb1+bplbsize
  8.  
  9. bplcsize    =    (40*40*4)
  10. bplc1        =    bplb2+bplbsize
  11. bplc2        =    bplc1+40
  12. bplc3        =    bplc2+40
  13. bplc4        =    bplc3+40
  14.  
  15. intena=        $9a
  16. intenar=    $1c
  17. intreq=        $9c
  18. dmacon=        $96
  19. cop1lc=        $80
  20. copjmp1=    $88
  21.  
  22. bltamod=    $64
  23. bltbmod=    $62
  24. bltcmod=    $60
  25. bltdmod=    $66
  26. bltafwm=    $44
  27. bltcpth=    $48
  28. bltcptl=    $4a
  29. bltbpth=    $4c
  30. bltbptl=    $4e
  31. bltapth=    $50
  32. bltaptl=    $52
  33. bltdpth=    $54
  34. bltdptl=    $56
  35. bltadat=    $74
  36. bltbdat=    $72
  37. bltcon1=    $42
  38. bltalwm=    $46
  39. bltcon0=    $40
  40. blitsize=    $58
  41. dmaconr=    $2
  42. forbid=        -30-102
  43. permit=        -30-108
  44. openlib    =    -408
  45. closelib=    -414
  46. execute    =    -222
  47. *************************************************************************
  48. waitblit:macro
  49.     btst    #14,$dff002
  50.     bne.s    *-8
  51.     endm
  52. *************************************************************************
  53.     lea    $dff000,a5            ;customchips basic adr.
  54.     move.w     #$7fff,intena(a5)        ;int.s sperren
  55.  
  56.     lea    bpla1,a0
  57. clrpl:    clr.l    (a0)+
  58.     cmp.l    #bplc1+bplcsize,a0
  59.     bne.s    clrpl
  60.     
  61.     bsr.l    init
  62.     bsr.w    mt_init
  63. ******************************************************************************
  64. ;type routine 53 chars in a row 
  65. ;d5    -    nr. of lines
  66. ;a0    -    text address
  67. ;a1    -    dest. bpl address
  68. ******************************************************************************
  69.     lea    text(pc),a0
  70.     lea    bpla1+(80*90),a1
  71.     moveq    #allsize-1,d5
  72. tloop_0:moveq    #0,d2            ;start x
  73. tloop_1:move.b    (a0)+,d0        ;get ascii of wanted char
  74.     lea    ascii(pc),a3        ;get ascii table
  75.     moveq    #-4,d1            ;reset char counter
  76. tloop_2:addq.l    #04,d1            ;increase char counter
  77.     cmp.b    (a3)+,d0        ;get pos in ascii table
  78.     bne.s    tloop_2
  79.     lea    chartab(pc),a3        ;get chartableadress
  80.     move.l    (a3,d1.l),a3        ;get wanted charadr. from chartable
  81.     moveq    #05-1,d1        ;y-size of char
  82.     move.w    d2,d3            ;get x    
  83.     move.w    d3,d4            ;double x    
  84.     lsr.w    #03,d3            ;x/8
  85.     andi.w    #$07,d4            ;bits to shift soft (last 3)
  86.     lea    (a1,d3.w),a4
  87. tloop_3:move.b    (a3),d3            ;Get source byte
  88.     ext.w    d3            ;expand to wordsize
  89.     asl.w    #08,d3            ;shift to begin of word
  90.     lsr.w    d4,d3            ;shift xxx bit right
  91.     or.b    d3,1(a4)        ;merge with bpl. bits
  92.     lsr.w    #08,d3            ;for first bpl. byte
  93.     or.b    d3,(a4)            ;merge with bpl. bits
  94.     adda.l    #40,a3            ;next source line
  95.     adda.l    #40*2,a4        ;next dest. line
  96.     dbf    d1,tloop_3
  97.     add.w    #06,d2
  98.     cmp.w    #(06*53),d2
  99.     bne.s    tloop_1
  100.     move.w    #65,d2            ;reset x-start    
  101.     adda.l    #80*06,a1
  102.     adda.l    #80*06,a2        ;next dest. lines
  103.     dbf    d5,tloop_0
  104.  
  105.     move.b    $00a(a5),oldy        ;store mouse y-pos
  106.  
  107.     move.l    #cop,$080(a5)
  108.     clr.w    $088(a5)
  109.  
  110.     move.l     $6c,oldint        ;
  111.     move.l     #irq,$6c        ;new Interrupt LEVEL 3
  112.     move.w     #$c010,intena(a5)    ;allow int from clist
  113. wait:    btst    #06,$bfe001
  114.     bne    wait
  115.  
  116.     cmp.w    #filenum,ypos        ;no file selected
  117.     bge.s    wait
  118.  
  119. quit:    waitblit
  120.     move.l    $04,a6        ;execbase address
  121.     lea    gfxname,a1
  122.     jsr    openlib(a6)
  123.     move.l    d0,a1
  124.     move.l     38(a1),cop1lc(a5)    ;restore old copperlist
  125.     clr.w     copjmp1(a5)
  126.     jsr     closelib(a6)    
  127.     move.w     #$83e0,dmacon(a5)
  128.     move.l     oldint,$6c        ;restore old level 3 int.
  129.     move.w    #$e03c,intena(a5)    ;allow int.s
  130.     bsr.w    mt_end
  131.  
  132.     lea    dosname(pc),a1
  133.     jsr    openlib(a6)        ;try to open dos library
  134.     move.l    d0,dosbase
  135.     beq.s    error
  136.  
  137.     move.w    ypos(pc),d0        ;use y-pos as offset
  138.     lsl.w    #02,d0            ;*4 for longword addressing
  139.     ext.l    d0
  140.     lea    filetab(pc),a0
  141.     move.l    (a0,d0.l),d1        ;pointer on file name
  142.     moveq    #0,d2            ;standart input
  143.     moveq    #0,d3            ;standart output
  144.     move.l    dosbase,a0
  145.     jsr    execute(a0)        ;try to execute file
  146.     move.l    dosbase,a1
  147.     jsr    closelib(a6)        ;close dos library
  148. error:    rts
  149. *******************************************************************************
  150. irq:    bsr.w    stars
  151.     bsr.w    vectord
  152.     bsr.w    typer
  153.     bsr.w    flash
  154.     bsr.w    chooser
  155.     bsr.w    muzax
  156.     move.w    #$0010,intreq(a5)    ;erase int . enabling bit
  157.     rte
  158. **************************************************************************
  159. chooser:move.b    $00a(a5),d0        ;get mouse y-pos
  160.     move.b    oldy(pc),d1        ;get old mouse y-pos
  161.     move.b    d0,oldy            ;store actual y-pos as old
  162.     sub.b    d0,d1            ;get difference
  163.     ext.w    d1
  164.     move.w    ypos(pc),d0        ;get pointer y-pos
  165.     sub.w    d1,d0
  166.     tst.w    d0            ;over upper border y ?        
  167.     bgt.w    plab_0
  168.     move.w    #0,d0            ;set pointer on upper border
  169.  
  170. plab_0:    cmp.w    #allsize-tophsize-1,d0    ;over bottom border y ?
  171.     blt.s    plab_1
  172.     move.w    #allsize-tophsize-1,d0    ;set pointer on bottom border
  173. plab_1:    move.w    d0,ypos            ;refresh pointer y-pos
  174.     mulu    #80*6,d0
  175.     move.l    #bpla1+(80*60),d1    ;text part start address
  176.     ext.l    d0
  177.     add.l    d0,d1            ;change address
  178.     move.w    d1,hia1+6
  179.     swap    d1
  180.     move.w    d1,hia1+2
  181.     swap    d1
  182.     addi.l    #40,d1
  183.     move.w    d1,hia2+6
  184.     swap    d1
  185.     move.w    d1,hia2+2
  186.     rts
  187. **************************************************************************
  188. oldy:    dc.w    0
  189. ypos:    dc.w    0
  190. **************************************************************************
  191. flash:    move.l    ftabaddr(pc),a0        ;get fade table address
  192.     move.w    (a0),col1+2
  193.     move.w    (a0)+,col2+2        ;insert colors
  194.     cmp.l    #ftabend,a0        ;correct address
  195.     bne.s    flab_0
  196.     suba.l    #ftabend-ftab,a0
  197. flab_0:    move.l    a0,ftabaddr        ;refresh address
  198.     rts
  199. **************************************************************************
  200. ftabaddr:dc.l    ftab    
  201. ftab:    dc.w    $001,$011,$111,$112,$122,$222,$223,$233,$333,$334,$344
  202.     dc.w    $444,$445,$455,$555,$556,$566,$666,$667,$677,$777,$778
  203.     dc.w    $788,$888,$889,$899,$999,$99a,$9aa,$aaa,$aab,$abb,$bbb
  204.     dc.w    $bbc,$bcc,$ccc,$ccd,$cdd,$ddd,$dde,$dee,$eee,$eef,$eff
  205.     dc.w    $fff,$fff,$eff,$eef,$eee,$dee,$dde,$ddd,$cdd,$ccd,$ccc
  206.     dc.w    $bcc,$bbc,$bbb,$abb,$aab,$aaa,$9aa,$99a,$999,$899,$889
  207.     dc.w    $888,$788,$778,$777,$677,$667,$666,$566,$556,$555,$455
  208.     dc.w    $445,$444,$344,$334,$333,$233,$223,$222,$122,$112,$111
  209.     dc.w    $011,$000
  210. ftabend:even            
  211. **************************************************************************
  212. stars:    lea    stlevel1+1(pc),a0
  213.     lea    stlevel2+1(pc),a1
  214.     lea    stlevel3+1(pc),a2
  215.     lea    stlevel4+1(pc),a3
  216.     move.w    #stnum-1,d0
  217.  
  218. stloop:    addq.b    #01,(a0)        ;move st. level 1
  219.     addq.b    #02,(a1)        ;move st. level 2
  220.     addq.b    #03,(a2)        ;move st. level 3
  221.     addq.b    #04,(a3)        ;move st. level 4
  222.     adda.w    #02*4,a0        
  223.     adda.w    #02*4,a1        
  224.     adda.w    #02*4,a2        
  225.     adda.w    #02*4,a3        ;next st. startposition
  226.     dbf    d0,stloop
  227.     rts
  228. **************************************************************************
  229. showbpl:dc.l    bplb1
  230. workbpl:dc.l    bplb2
  231. **************************************************************************
  232. vectord:lea    sintab(pc),a0        ;sintable
  233.     lea    sintab+180(pc),a1    ;costable
  234.  
  235.     move.l    xtabaddr(pc),a2
  236. speed1:    addq.l    #02*1,a2        ;shift start of x-middle table
  237.     cmp.l    #xtabend,a2
  238.     blt.s    sptok1
  239.     suba.l    #xtabend-xtab,a2    ;correct address if nessesary
  240. sptok1:    move.l    a2,xtabaddr        ;refresh address
  241.     move.w    (a2),xmiddle+2        ;new x-middle point
  242.  
  243.     move.l    ztabaddr(pc),a2
  244. speed2:    addq.l    #02*3,a2        ;shift start of z-coord table
  245.     cmp.l    #ztabend,a2
  246.     blt.s    zptok1
  247.     suba.l    #ztabend-ztab,a2    ;correct address if nessesary
  248. zptok1:    move.l    a2,ztabaddr        ;refresh address
  249.     move.w    (a2),zcoord1+2        ;modify code part 1
  250.     move.w    (a2),zcoord2+2        ;modify code part 2 (2 divs)
  251.  
  252.     move.l    angxtabaddr(pc),a2
  253. speed3:    addq.l    #02*1,a2        ;shift start of x-angle table
  254.     cmp.l    #angtabend,a2
  255.     blt.s    axptok1
  256.     suba.l    #angtabend-angtab,a2    ;correct address if nessesary
  257. axptok1:move.l    a2,angxtabaddr        ;refresh address
  258.     move.w    (a2),d1            ;get angle x
  259.  
  260.     move.l    angytabaddr(pc),a2
  261. speed4:    addq.l    #02*2,a2        ;shift start of y-angle table
  262.     cmp.l    #angtabend,a2
  263.     blt.s    ayptok1
  264.     suba.l    #angtabend-angtab,a2    ;correct address if nessesary
  265. ayptok1:move.l    a2,angytabaddr        ;refresh address
  266.     move.w    (a2),d2            ;get angle y
  267.  
  268.     move.l    angztabaddr(pc),a2
  269. speed5:    addq.l    #02*1,a2        ;shift start of z-angle table
  270.     cmp.l    #angtabend,a2
  271.     blt.s    azptok1
  272.     suba.l    #angtabend-angtab,a2    ;correct address if nessesary
  273. azptok1:move.l    a2,angztabaddr        ;refresh address
  274.     move.w    (a2),d3            ;get angle z
  275.  
  276.     
  277.     move.w    #360*2,d0        ;maximal angle
  278.     tst.w    d1            ;angle positive ?
  279.     bgt.s    axp
  280.     add.w    d0,d1            ;correct angle        
  281. axp:    cmp.w    d0,d1            ;angle over maximal
  282.     blt.s    refanx
  283.     sub.w    d0,d1            ;correct angle
  284. refanx:    move.w    (a0,d1.w),mul1+2    ;sinus of angle x
  285.     move.w    (a1,d1.w),mul2+2        ;cosinus of angle x
  286.     tst.w    d2            ;angle positive ?
  287.     bgt.s    ayp
  288.     add.w    d0,d2            ;correct angle        
  289. ayp:    cmp.w    d0,d2            ;angle over maximal
  290.     blt.s    refany
  291.     sub.w    d0,d2            ;correct angle
  292. refany:    move.w    (a1,d2.w),mul3+2    ;cosinus of angle y
  293.     move.w    (a0,d2.w),mul4+2    ;sinus of angle y
  294.     tst.w    d3            ;angle positive ?
  295.     bgt.s    azp
  296.     add.w    d0,d3            ;correct angle        
  297. azp:    cmp.w    d0,d3            ;angle over maximal
  298.     blt.s    refanz
  299.     sub.w    d0,d3            ;correct angle
  300. refanz:    move.w    (a0,d3.w),mul5+2    ;sinus of angle z
  301.     move.w    (a1,d3.w),mul6+2    ;cosinus of angle z
  302.     move.w    (a0,d3.w),mul7+2    ;sinus of angle z
  303.     move.w    (a1,d3.w),mul8+2    ;cosinus of angle z
  304. ;------------------------------------------------------------------------------
  305.  
  306.     lea    showbpl(pc),a1        ;do double buffering
  307.     movem.l    (a1)+,d0-d1
  308.     exg    d0,d1            
  309.     movem.l    d0-d1,-(a1)        ;refresh adresses
  310.  
  311.     move.w    d0,hib1+6
  312.     swap    d0
  313.     move.w    d0,hib1+2        ;init bpl. pointer bpl 0
  314.  
  315.     move.l    d1,a0
  316.     swap    d1
  317.     waitblit
  318.     move.w    d1,bltcpth(a5)            ;init dest. adress hi-word
  319.     clr.w    bltdmod(a5)
  320.     move.l    #$01000000,bltcon0(a5)
  321.     swap    d1
  322.     addi.l    #40*40,d1
  323.     move.l    d1,bltdpth(a5)
  324.     move.w    #170*64+(320/16),blitsize(a5)    ;clear wanted page 
  325. ;------------------------------------------------------------------------------
  326.     lea    points(pc),a1        ;coord table
  327.     lea    xybuff(pc),a2        ;buffer for calculated 2d coords
  328.     moveq    #pnum-1,d5        ;nr. of points
  329.     moveq    #10,d6            ;2^2 = 1024 as eye z-coord.
  330. ;a1    -    coord table x,y,z
  331. ;a2    -    buffer for rotated x,y,z coords
  332. ;a3    -    sin&costable
  333. ;d5    -    number of points
  334. ;d6    -    zoom
  335. ;d7    -    number of surfaces
  336.  
  337. loop_1:    movem.w    (a1)+,d0-d1        ;get x,y coords (z-not used)
  338.     asl.w    #04,d0
  339.     asl.w    #04,d1            ;*16 for smoother calculations
  340.     
  341.     move.l    a3,a4            ;get save sinecostab adress
  342. ;d0    -    x-coord
  343. ;d1    -    y-coord
  344. ;d2    -    z-coord
  345. ;d3    -    used
  346. ;d4    -    used
  347.  
  348. rotate:    move.w    d1,d3            ;d3 = y
  349. mul1:    muls    #00,d1            ;y*sin(anglex)
  350. mul2:    muls    #00,d3            ;y*cos(anglex)
  351.     add.l    d3,d3            ;*2
  352.     swap    d3            ;y`=y*cos(anglex)-(z*sin(anglex)=0)
  353.     add.l    d1,d1            ;*2
  354.     swap    d1            ;z`=y*sin(anglex)+(z*cos(anglex)=0)
  355. rotangy:move.w    d0,d2            ;d2 = x
  356.  
  357. mul3:    muls    #00,d2            ;x*cos(angley)
  358.     move.w    d1,d4            ;d3 = z
  359. mul4:    muls    #00,d1        ;z*sin(angley)
  360.  
  361.  
  362.     add.l    d1,d2    
  363.     add.l    d2,d2            ;*2
  364.     swap    d2            ;x`=x*cos(angley)+z*sin(angley)
  365.  
  366.  
  367. rotangz:move.w    d2,d1            ;d1=x
  368. mul5:    muls    #00,d2        ;x*sin(anglez)
  369. mul6:    muls    #00,d1        ;x*cos(anglez)
  370.     move.w    d3,d4            ;d4=y
  371. mul7:    muls    #00,d3        ;y*sin(anglez)
  372. mul8:    muls    #00,d4        ;y*cos(anglez)
  373.     sub.l    d3,d1
  374.     add.l    d1,d1            ;*2
  375.     swap    d1            ;x`=x*cos(anglez)-y*sin(anglez)
  376.     add.l    d4,d2            
  377.     add.l    d2,d2            ;*2
  378.     swap    d2            ;y`=x*sin(anglez)+y*cos(anglez)
  379.     asr.w    #04,d1
  380.     asr.w    #04,d2
  381.  
  382. centrp:    tst.w    d0
  383.     beq.s    nocentr            ;avoid division by zero
  384.     ext.l    d1
  385.     ext.l    d2
  386.     asl.l    d6,d1
  387.     asl.l    d6,d2            ;*1024
  388.  
  389. zcoord1:divs    #-1024,d1        ;(x`* viewerz)/z`
  390. zcoord2:divs    #-1024,d2        ;(y`* viewerz)/z`
  391.  
  392.     neg.w    d1            ;d1=-x`    
  393. xmiddle:addi.w    #320/2,d1            ;add x-middle
  394. ymiddle:addi.w    #256/2,d2        ;add y-middle
  395. nocentr:move.w    d1,(a2)+        ;insert x in table
  396.     move.w    d2,(a2)+        ;insert y in table
  397.     dbf    d5,loop_1
  398.  
  399. ;-----------------------------------------------------------------------------
  400.     move.l    #$ffff8000,bltbdat(a5)        ;init bltadat&bltbdat
  401.     move.l    #-1,bltafwm(a5)            
  402.     move.w    #40,bltcmod(a5)            ;init fixed reg. for line draw
  403.     move.w    #40,bltdmod(a5)
  404.     move.w    #bplb1/$10000,bltdpth(a5)    ;hi-word dest. address
  405.  
  406.     lea    xybuff(pc),a1        ;get 2d-coord table address
  407.     lea    multab40(pc),a2        ;get multable
  408.  
  409.     move.w    #pnum-2,d4        ;nr. of lines to draw
  410. bloop:    movem.w    (a1)+,d0-d3        ;get x1,y1,x2,y2
  411.     subq.l    #04,a1            ;go back one coord pair
  412.     cmp.w    d1,d3
  413.     beq.w    noline
  414.     bgt.s    goon
  415.     exg    d0,d2
  416.     exg    d1,d3
  417.  
  418. goon:    movem.l    d4,-(a7)
  419.     move.w    d0,d7
  420.     move.w    d1,d5
  421.  
  422.     lsr.w    #04,d7
  423.     add.w    d7,d7
  424.     lea    (a0,d7.w),a3
  425.     add.w    d5,d5            ;y*2
  426.     add.w    (a2,d5.w),a3        ;add y-offset
  427.     sub.w    d0,d2
  428.     sub.w    d1,d3
  429.     moveq    #15,d5
  430.     and.l    d5,d0
  431.     move.w    d0,d7
  432.     ror.l    #04,d0
  433.     eor.w    d5,d7
  434.     moveq    #00,d5
  435.     bset    d7,d5
  436.     move.w    #04,d0        ;*** fill new word
  437.     tst.w    d2
  438.     bpl.s    l1
  439.     addq.w    #01,d0
  440.     neg.w    d2
  441. l1:    cmp.w    d2,d3
  442.     ble.s    l2
  443.     exg    d2,d3
  444.     subq.w    #04,d0    
  445.     add.w    d0,d0
  446. l2:    move.w    d3,d7
  447.     sub.w    d2,d7
  448.     lsl.w    #02,d7
  449.     add.w    d3,d3
  450.     moveq    #00,d6
  451.     move.w    d3,d6
  452.     sub.w    d2,d6
  453.     bpl.s    l3
  454.     ori.w    #16,d0
  455. l3:    add.w    d3,d3
  456.     lsl.w    #02,d0
  457.     addq.w    #01,d2
  458.     lsl.w    #06,d2
  459.     addq.w    #02,d2    
  460.     swap    d3
  461.     move.w    d7,d3
  462.     or.l    #$0b5a0003,d0
  463.  
  464. wb:    btst    #14,$002(a5)
  465.     bne.s    wb
  466.     eor    d5,(a3)
  467.     move.l    d3,bltbmod(a5)
  468.     move.w    d6,bltaptl(a5)
  469.     move.w    a3,bltcptl(a5)
  470.     move.w    a3,bltdptl(a5)
  471.     move.l    d0,bltcon0(a5)
  472.     move.w    d2,blitsize(a5)
  473.     movem.l    (a7)+,d4
  474. noline:    dbf    d4,bloop        ;build one surface
  475.     waitblit
  476.     adda.w    #(40*210)-2,a0        ;go to end of bpl
  477.     move.l    #$09f00012,bltcon0(a5)
  478.     move.l    #$00000000,bltamod(a5)    ;init bltamod & bltdmod
  479.     move.l    a0,bltapth(a5)
  480.     move.l    a0,bltdpth(a5)
  481.     move.w    #170*64+(320/16),blitsize(a5)    ;blitter fill
  482.     rts
  483. **************************************************************************
  484. stlevels=    4            ;number of star-levels (max 4)
  485. stnum    =    8            ;number of stars per level
  486. *************************************************************************
  487. init:    waitblit
  488.     clr.l    bltamod(a5)
  489.     move.l    #$09f00000,bltcon0(a5)
  490.     move.l    #-1,bltafwm(a5)
  491.     move.l    #logo,bltapth(a5)
  492.     move.l    #bpla1,bltdpth(a5)
  493.     move.w    #(56*2)*64+20,blitsize(a5)
  494.     waitblit
  495.  
  496.     lea    multab40(pc),a0
  497.     move.w    #256-1,d0
  498.     moveq    #00,d1
  499. fill40:    move.w    d1,(a0)+
  500.     addi.w    #40,d1
  501.     dbf    d0,fill40
  502.     lea    points(pc),a0
  503.     move.w    #pnum-1,d0
  504. iloop_1:subi.w    #160,(a0)+
  505.     subi.w    #128,(a0)    ;correct coords
  506.     not.w    (a0)+
  507.     dbf    d0,iloop_1
  508.  
  509.     lea    angtab(pc),a0
  510.     move.w    #(angtabend-angtab)/2-1,d0
  511. iloop_2:move.w    (a0),d1
  512.     add.w    d1,d1                ;*2 for word addressing
  513.     move.w    d1,(a0)+
  514.     dbf    d0,iloop_2
  515.  
  516.     lea    stlevel1(pc),a0        ;first stlevel buffer 
  517.     lea    sprite(pc),a1        ;sprite data
  518.     lea    spr0(pc),a2        ;sprite register in copperlist
  519.     moveq    #stlevels-1,d0        ;nr. of star levels
  520.  
  521. bloop1:    move.l    a0,d6
  522.     move.w    d6,6(a2)        ;sprite lo-word
  523.     swap    d6
  524.     move.w    d6,2(a2)        ;spr. hi-word    -init sprite data table
  525.     adda.w    #02*4,a2        ;go to next sprite registers in coplist
  526.     moveq    #stnum-1,d1        ;nr. of stars per level
  527.     moveq    #$71,d2            ;startpos x (for randomize)
  528.     move    #$29+202,d3            ;vertical start
  529.     move    #$2a+202,d4            ;vertical end
  530.     moveq    #00,d5            ;for 2nd byte in second controllword
  531.  
  532. blevel:    mulu    $006(a5),d2
  533.     eor.b    #$ed,d2
  534.     mulu    $006(a5),d2        ;random horizontal start
  535.     move.b    d3,(a0)+        ;insert y-startposition (1. word)
  536.     move.b    d2,(a0)+        ;insert x-startposition 
  537.     move.b    d4,(a0)+        ;insert y-endposition    (2. word)
  538.     move.b    d5,(a0)+        ;insert 9. bit of vert. start & end
  539.     move.l    (a1),(a0)+        ;insert sprite data
  540.     addq.w    #05,d3            ;next vertical startpos
  541.     cmp.w    #$ff,d3            ;over 256 ?
  542.     ble.s    noov1
  543.     bset    #02,d5            ;set 9. bit of vertical start
  544.  
  545. noov1:    addq.w    #05,d4            ;next vertical endpos
  546.     cmp.w    #$ff,d4            ;over 256 ?
  547.     ble.s    noov2
  548.     bset    #01,d5            ;set 9. bit of vertical end
  549.  
  550. noov2:    dbf    d1,blevel        ;build up level
  551.     move.l    #00,(a0)+        ;insert end mark of sprite table
  552.     dbf    d0,bloop1        ;build up next level    
  553.  
  554.     bsr.w    tinit            ;init typer structure table
  555.  
  556. waitvb:    tst.b    $006(a5)        ;wait for vertical blank
  557.     bne.s    waitvb
  558.     move.w    #$8020,dmacon(a5)    ;turn on sprites
  559.     rts
  560. *************************************************************************
  561. ;init typer structure table
  562. *************************************************************************
  563. tinit:    lea    strtab(pc),a0        ;insert text (char addr.) in structure
  564.     move.w    #tnum-1,d0        ;nr. of char addresses needed
  565.     move.l    #masks+(tnum*8)-8,d1    ;first mask address
  566.     moveq    #-tnum*2,d2        ;first x-offset 
  567. tiloop0:move.l    d1,(a0)+        ;insert mask address
  568.     move.l    d2,(a0)+        ;insert x-offset
  569.     move.l    #char,(a0)+
  570.     subq.l    #08,d1
  571.     addq.l    #02,d2
  572.     dbf    d0,tiloop0
  573.     rts
  574. **************************************************************************
  575. sprite:    dc.w    %0000000000000101,%0000000000000011
  576. **************************************************************************
  577. multab40:    dcb.w    256,0
  578. **************************************************************************
  579. stlevel1:    dcb.w    (4*stnum)+2,0
  580. stlevel2:    dcb.w    (4*stnum)+2,0
  581. stlevel3:    dcb.w    (4*stnum)+2,0
  582. stlevel4:    dcb.w    (4*stnum)+2,0
  583. *************************************************************************
  584. tnum    =    5
  585. *************************************************************************
  586. typer:    tst.b    dowait                ;waiter enabled ?
  587.     beq.s    tlab_0
  588.     addq.b    #01,dowait+1            ;increase waiter
  589.     cmp.b    #40,dowait+1            
  590.     bne.w    tlab_6
  591.     clr.w    dowait                ;reset waitflag
  592.     bsr.w    tinit                ;init structuretable
  593. tlab_0:    waitblit
  594.     move.w    #(688-16)/8,bltamod(a5)        ;modulo source A
  595.     move.w    #(320-16)/8,bltbmod(a5)        ;modulo source B (mask)
  596.     move.w    #(320-16)/8,bltdmod(a5)        ;modulo dest. D  (dest. bpl)
  597.     move.l    #$0dc00000,bltcon0(a5)        ;D=A*B & ascending mode (and)
  598.     move.w    #-1,bltafwm(a5)            ;full word mask source A
  599.                         ;init register for blitter op.
  600.     lea    bplc1+160*13,a0            ;dest. bpl address
  601.     lea    strtab(pc),a1            ;get structure table address
  602.     moveq    #tnum-1,d0            ;get number of chars to work 
  603.     moveq    #0,d3                ;reset char finished counter
  604.  
  605. tyloop0:move.l    (a1),d1                ;get mask address
  606.     move.l    4(a1),d2            ;get x-byte offset
  607.     cmp.l    #masks+38,d1            ;final mask ?
  608.     bne.s    tlab_4
  609.     cmp.l    #30,d2                ;maximal offset -8 ? 
  610.     blt.w    tlab_2
  611.     lea    12(a1),a1            ;next structure start
  612.     addq.b    #01,d3                ;char finished
  613.     cmp.b    #tnum,d3            ;last char finished ?
  614.     bne.s    tlab_1
  615.     move.b    #01,dowait
  616. tlab_1:    bra.s    tlab_5
  617.  
  618. tlab_2:    addi.l    #2*tnum,d2            ;increase x-offset
  619.     move.l    #masks,d1            ;reset mask address
  620.  
  621.     move.l    text2addr(pc),a2        ;get text address
  622.     move.b    (a2)+,d4            ;get ascii of wanted char
  623.     cmp.l    #text2end,a2            ;over end of text ?
  624.     bne.w    tlab_3
  625.     suba.l    #text2end-text2,a2        ;reset textaddress
  626. tlab_3:move.l    a2,text2addr            ;go on in text
  627.  
  628.     lea    ascii2(pc),a2            ;get ascii table address
  629.     moveq    #-2,d5                ;reset char pos counter
  630. tyloop1:addq.l    #02,d5                ;increase offset
  631.     cmp.b    (a2)+,d4            ;get char offset
  632.     bne.s    tyloop1
  633.  
  634.     lea    char(pc),a2            ;get char address
  635.     lea    (a2,d5.l),a2            ;get char addr. & offset
  636.     move.l    a2,8(a1)            ;insert new char address
  637.  
  638. tlab_4:    addq.l    #02,d1                ;increase mask address
  639.     move.l    d1,(a1)+            ;refresh mask address
  640.     move.l    d2,(a1)+            ;refresh x-byte offset
  641.  
  642.     tst.l    d2                ;offset positive of 0 ?
  643.     bge.s    ok
  644.     addq.l    #04,a1                ;correct str. address
  645.     bra.s    tlab_5
  646. ok:    waitblit
  647.     move.l    (a1)+,bltapth(a5)        ;source A (char)
  648.     move.l    d1,bltbpth(a5)            ;source B (mask)
  649.     lea    (a0,d2.l),a2            ;dest. address & offset
  650.     move.l    a2,bltdpth(a5)            ;dest. D (dest. bpl)
  651.     move.w    #(19*4)*64+1,blitsize(a5)    ;insert new char
  652. tlab_5:    dbf    d0,tyloop0
  653. tlab_6:rts
  654. *************************************************************************
  655. dowait:    dc.b    0,0
  656. *************************************************************************
  657. ;maskaddress,x-byte offset,charaddress
  658. *************************************************************************
  659. strtab:        dcb.l    3*tnum
  660. *************************************************************************
  661. ascii2:    dc.b    "ABCDEFGHIJKLMNOPQRSTUVWXYZ!?.-()1234567890 "
  662.     even
  663. *************************************************************************
  664. text2addr:dc.l    text2
  665. *************************************************************************
  666. ;20 chars per message followed by zero value
  667. *************************************************************************
  668. text2:    dc.b    "   MOIN MOIN !!!!   "  
  669.         DC.B    "HMM DIS IS DOOM WITH"
  670.         DC.B    "DA CRAP HOUSE NO.14!"  
  671.         DC.B    " HEY HAVE A LOOK AT "
  672.         DC.B    " THE TDD MEETRO COZ "
  673.     DC.B    "   OUR STAR-GFXMAN  " 
  674.         DC.B    "     D - S I G N    "
  675.         DC.B    "DID THE GFX FOR IT !"
  676.     DC.B    "SO NOW I HAVE TO DO "
  677.         DC.B    "MY FUCKING SENDINGS "
  678.         DC.B    "  FOR TODAY ......  "
  679.         DC.B    "   HOPE 2 C U ALL   "
  680.      DC.B    "AT THE CULT-PADDY !!"
  681.         DC.B    "FRIENDLY HANDSHAKES "
  682.         DC.B     "  FROM DOOM WALK TO "
  683.         dc.b    "  SARON AND ERROR   "
  684.         DC.B    " AND DR.DRE OF TSB  "
  685.         dc.b    "  WOTW-EUROFRONT    "
  686.     dc.b    "      MAC-TEK       "
  687.     dc.b    "    MAC AND BOB     "
  688.     dc.b    "  OF BYTE BUSTERS   "
  689.     dc.b    "SLICER AND POWERSWAP"
  690.      dc.b    "LINCOLN AND HEDGEHOG"
  691.      dc.b    "     OF HARDLINE    "
  692.     dc.b    "   MERCY-HYPNOTIC   "
  693.     dc.b    "JOKER AND SLAUGHTER "
  694.     dc.b    "       OF TECH      "
  695.     dc.b    "    S-SEX-DIGITAL   "
  696.     dc.b    "  DR.KADAVER-ABJECT "
  697.     dc.b    "   RIBALD-PIRATES   "
  698.     dc.b    "    CRUSH-CIRCLE    "
  699.     dc.b    "    RONNY-ACUME     "
  700.     dc.b    "GHOSTRIDER AND CIBI "
  701.      DC.B    "     OF SHINING 8   "
  702.     dc.b    "    SCOOTER-RISK    "
  703.     dc.b    "STRATEGO AND XENIATO"
  704.     DC.B    "     OF PARANOID    "
  705.     DC.B    "PLAUZE AND EXECUTOR "
  706.         DC.B    "   OF ALPHAFLIGHT   "
  707.         DC.B    "    TOXIC-SPLASH    "
  708.     DC.B    "   MASSIVE-VANISH   "
  709.         DC.B    "SHIRKHAN-INDEPENDENT"     
  710.     DC.B    "   TIGER-SCOOPEX    "
  711.     DC.B    "    JUGGER-PANIC    " 
  712.     DC.B    "PRIEST AND BACKLASH "     
  713.     DC.B    "  OF AGNOSTIC FRONT "
  714.     DC.B    "    HIJACK-SPLASH   "
  715.     DC.B    "   MOGUL-PARADISE   "
  716.     DC.B    "    ARMIN-SUPPLEX   "
  717.     DC.B    "      SPY-MEXX      "
  718.         DC.B    "   MASQUE-DELIGHT   "
  719.         DC.B    "  DECCA OF PRECISE  "
  720.      DC.B    "     SARACEN AND    "
  721.         DC.B     "    DARKWALKER OF   "
  722.         DC.B    "     VISUAL BYTES   "
  723.      DC.B    "    CROWN-AGONY     "
  724.     DC.B    "  LORD CHAOS-XZESS  "  
  725.     DC.B    "   THOR-EREMATION   "
  726.     DC.B    "NEPUMUK AND GAMEBIT "
  727.         DC.B    "    INDEPENDENT     "        
  728.         dc.b    " ZIG ZAG-SYMBIOSIS  "
  729.         DC.B    "   POLARIS-DELIGHT  "
  730.         DC.B    " HOOVER-BRAINSTORM  "
  731.         DC.B    "  DEATH ANGEL-AMAZE "
  732.         DC.B    "   DARYL AND RAVE   "
  733.         DC.B       "     OF SILENTS     "
  734.         DC.B    "    CRANE-SUBZERO   "
  735.         DC.B    "     PATS-ANALOG    "
  736.         DC.B    "     AXEL-TREACL    "
  737.         DC.B    "     COOPER-CULT    "
  738.         DC.B    "KILLRAVEN-DEFFPACERS"
  739.         DC.B    "  EQUILIZER-CHROME  "
  740.         DC.B    "ARISTOTELES-AVATARS "        
  741.         DC.B    "  CRUSIFIX-ZENITH   "
  742.         DC.B    "        AND TO      "
  743.         DC.B    " HURRICANE-NOXIOUS  "     
  744.     DC.B    "         L8R        "
  745.     DC.B    " DOOM OF DESIGN !!! "
  746.         DC.B    " TEXT RESTARTS !    "
  747.         DC.B    " TEXT RESTARTS !!   "
  748.      DC.B    " TEXT RESTARTS !!!  "
  749.     DC.B    " TEXT RESTARTS !!!! "  
  750. text2end:even
  751.  
  752. *************************************************************************
  753. mt_init:lea    mdata,a0
  754.     move.l    a0,a1
  755.     add.l    #$3b8,a1
  756.     moveq    #$7f,d0
  757.     moveq    #0,d1
  758. mt_loop:move.l    d1,d2
  759.     subq.w    #1,d0
  760. mt_lop2:move.b    (a1)+,d1
  761.     cmp.b    d2,d1
  762.     bgt.s    mt_loop
  763.     dbf    d0,mt_lop2
  764.     addq.b    #1,d2
  765.  
  766.     lea    mt_samplestarts(pc),a1
  767.     asl.l    #8,d2
  768.     asl.l    #2,d2
  769.     add.l    #$43c,d2
  770.     add.l    a0,d2
  771.     move.l    d2,a2
  772.     moveq    #$1e,d0
  773. mt_lop3:clr.l    (a2)
  774.     move.l    a2,(a1)+
  775.     moveq    #0,d1
  776.     move.w    42(a0),d1
  777.     asl.l    #1,d1
  778.     add.l    d1,a2
  779.     add.l    #$1e,a0
  780.     dbf    d0,mt_lop3
  781.  
  782.     or.b    #$2,$bfe001
  783.     move.b    #$6,mt_speed
  784.     clr.w    $dff0a8
  785.     clr.w    $dff0b8
  786.     clr.w    $dff0c8
  787.     clr.w    $dff0d8
  788.     clr.b    mt_songpos
  789.     clr.b    mt_counter
  790.     clr.w    mt_pattpos
  791.     rts
  792.  
  793. mt_end:    clr.w    $dff0a8
  794.     clr.w    $dff0b8
  795.     clr.w    $dff0c8
  796.     clr.w    $dff0d8
  797.     move.w    #$f,$dff096
  798.     rts
  799.  
  800. muzax:    movem.l    d0-d4/a0-a3/a5-a6,-(a7)
  801.     lea    mdata,a0
  802.     addq.b    #$1,mt_counter
  803.     move.b    mt_counter,D0
  804.     cmp.b    mt_speed,D0
  805.     blt.s    mt_nonew
  806.     clr.b    mt_counter
  807.     bra    mt_getnew
  808.  
  809. mt_nonew:
  810.     lea    mt_voice1(pc),a6
  811.     lea    $dff0a0,a5
  812.     bsr    mt_checkcom
  813.     lea    mt_voice2(pc),a6
  814.     lea    $dff0b0,a5
  815.     bsr    mt_checkcom
  816.     lea    mt_voice3(pc),a6
  817.     lea    $dff0c0,a5
  818.     bsr    mt_checkcom
  819.     lea    mt_voice4(pc),a6
  820.     lea    $dff0d0,a5
  821.     bsr    mt_checkcom
  822.     bra    mt_endr
  823.  
  824. mt_arpeggio:
  825.     moveq    #0,d0
  826.     move.b    mt_counter,d0
  827.     divs    #$3,d0
  828.     swap    d0
  829.     cmp.w    #$0,d0
  830.     beq.s    mt_arp2
  831.     cmp.w    #$2,d0
  832.     beq.s    mt_arp1
  833.  
  834.     moveq    #0,d0
  835.     move.b    $3(a6),d0
  836.     lsr.b    #4,d0
  837.     bra.s    mt_arp3
  838. mt_arp1:moveq    #0,d0
  839.     move.b    $3(a6),d0
  840.     and.b    #$f,d0
  841.     bra.s    mt_arp3
  842. mt_arp2:move.w    $10(a6),d2
  843.     bra.s    mt_arp4
  844. mt_arp3:asl.w    #1,d0
  845.     moveq    #0,d1
  846.     move.w    $10(a6),d1
  847.     lea    mt_periods(pc),a0
  848.     moveq    #$24,d7
  849. mt_arploop:
  850.     move.w    (a0,d0.w),d2
  851.     cmp.w    (a0),d1
  852.     bge.s    mt_arp4
  853.     addq.l    #2,a0
  854.     dbf    d7,mt_arploop
  855.     rts
  856. mt_arp4:move.w    d2,$6(a5)
  857.     rts
  858.  
  859. mt_getnew:
  860.     lea    mdata,a0
  861.     move.l    a0,a3
  862.     move.l    a0,a2
  863.     add.l    #$c,a3
  864.     add.l    #$3b8,a2
  865.     add.l    #$43c,a0
  866.  
  867.     moveq    #0,d0
  868.     move.l    d0,d1
  869.     move.b    mt_songpos,d0
  870.     move.b    (a2,d0.w),d1
  871.     asl.l    #8,d1
  872.     asl.l    #2,d1
  873.     add.w    mt_pattpos,d1
  874.     clr.w    mt_dmacon
  875.  
  876.     lea    $dff0a0,a5
  877.     lea    mt_voice1(pc),a6
  878.     bsr.s    mt_playvoice
  879.     lea    $dff0b0,a5
  880.     lea    mt_voice2(pc),a6
  881.     bsr.s    mt_playvoice
  882.     lea    $dff0c0,a5
  883.     lea    mt_voice3(pc),a6
  884.     bsr.s    mt_playvoice
  885.     lea    $dff0d0,a5
  886.     lea    mt_voice4(pc),a6
  887.     bsr.s    mt_playvoice
  888.     bra    mt_setdma
  889.  
  890. mt_playvoice:
  891.     move.l    (a0,d1.l),(a6)
  892.     addq.l    #4,d1
  893.     moveq    #0,d2
  894.     move.b    $2(a6),d2
  895.     and.b    #$f0,d2
  896.     lsr.b    #4,d2
  897.     move.b    (a6),d0
  898.     and.b    #$f0,d0
  899.     or.b    d0,d2
  900.     tst.b    d2
  901.     beq.s    mt_setregs
  902.     moveq    #0,d3
  903.     lea    mt_samplestarts(pc),a1
  904.     move.l    d2,d4
  905.     subq.l    #$1,d2
  906.     asl.l    #2,d2
  907.     mulu    #$1e,d4
  908.     move.l    (a1,d2.l),$4(a6)
  909.     move.w    (a3,d4.l),$8(a6)
  910.     move.w    $2(a3,d4.l),$12(a6)
  911.     move.w    $4(a3,d4.l),d3
  912.     tst.w    d3
  913.     beq.s    mt_noloop
  914.     move.l    $4(a6),d2
  915.     asl.w    #1,d3
  916.     add.l    d3,d2
  917.     move.l    d2,$a(a6)
  918.     move.w    $4(a3,d4.l),d0
  919.     add.w    $6(a3,d4.l),d0
  920.     move.w    d0,8(a6)
  921.     move.w    $6(a3,d4.l),$e(a6)
  922.     move.w    $12(a6),$8(a5)
  923.     bra.s    mt_setregs
  924. mt_noloop:
  925.     move.l    $4(a6),d2
  926.     add.l    d3,d2
  927.     move.l    d2,$a(a6)
  928.     move.w    $6(a3,d4.l),$e(a6)
  929.     move.w    $12(a6),$8(a5)
  930. mt_setregs:
  931.     move.w    (a6),d0
  932.     and.w    #$fff,d0
  933.     beq    mt_checkcom2
  934.     move.b    $2(a6),d0
  935.     and.b    #$F,d0
  936.     cmp.b    #$3,d0
  937.     bne.s    mt_setperiod
  938.     bsr    mt_setmyport
  939.     bra    mt_checkcom2
  940. mt_setperiod:
  941.     move.w    (a6),$10(a6)
  942.     and.w    #$fff,$10(a6)
  943.     move.w    $14(a6),d0
  944.     move.w    d0,$dff096
  945.     clr.b    $1b(a6)
  946.  
  947.     move.l    $4(a6),(a5)
  948.     move.w    $8(a6),$4(a5)
  949.     move.w    $10(a6),d0
  950.     and.w    #$fff,d0
  951.     move.w    d0,$6(a5)
  952.     move.w    $14(a6),d0
  953.     or.w    d0,mt_dmacon
  954.     bra    mt_checkcom2
  955.  
  956. mt_setdma:
  957.     move.w    #$12c,d0
  958. mt_wait:dbf    d0,mt_wait
  959.     move.w    mt_dmacon,d0
  960.     or.w    #$8000,d0
  961.     move.w    d0,$dff096
  962.     move.w    #$12c,d0
  963. mt_wai2:dbf    d0,mt_wai2
  964.     lea    $dff000,a5
  965.     lea    mt_voice4(pc),a6
  966.     move.l    $a(a6),$d0(a5)
  967.     move.w    $e(a6),$d4(a5)
  968.     lea    mt_voice3(pc),a6
  969.     move.l    $a(a6),$c0(a5)
  970.     move.w    $e(a6),$c4(a5)
  971.     lea    mt_voice2(pc),a6
  972.     move.l    $a(a6),$b0(a5)
  973.     move.w    $e(a6),$b4(a5)
  974.     lea    mt_voice1(pc),a6
  975.     move.l    $a(a6),$a0(a5)
  976.     move.w    $e(a6),$a4(a5)
  977.  
  978.     add.w    #$10,mt_pattpos
  979.     cmp.w    #$400,mt_pattpos
  980.     bne.s    mt_endr
  981. mt_nex:    clr.w    mt_pattpos
  982.     clr.b    mt_break
  983.     addq.b    #1,mt_songpos
  984.     and.b    #$7f,mt_songpos
  985.     move.b    mt_songpos,d1
  986.     cmp.b    mdata+$3b6,d1
  987.     bne.s    mt_endr
  988.     move.b    mdata+$3b7,mt_songpos
  989. mt_endr:tst.b    mt_break
  990.     bne.s    mt_nex
  991.     movem.l    (a7)+,d0-d4/a0-a3/a5-a6
  992.     rts
  993.  
  994. mt_setmyport:
  995.     move.w    (a6),d2
  996.     and.w    #$fff,d2
  997.     move.w    d2,$18(a6)
  998.     move.w    $10(a6),d0
  999.     clr.b    $16(a6)
  1000.     cmp.w    d0,d2
  1001.     beq.s    mt_clrport
  1002.     bge.s    mt_rt
  1003.     move.b    #$1,$16(a6)
  1004.     rts
  1005. mt_clrport:
  1006.     clr.w    $18(a6)
  1007. mt_rt:    rts
  1008.  
  1009. mt_myport:
  1010.     move.b    $3(a6),d0
  1011.     beq.s    mt_myslide
  1012.     move.b    d0,$17(a6)
  1013.     clr.b    $3(a6)
  1014. mt_myslide:
  1015.     tst.w    $18(a6)
  1016.     beq.s    mt_rt
  1017.     moveq    #0,d0
  1018.     move.b    $17(a6),d0
  1019.     tst.b    $16(a6)
  1020.     bne.s    mt_mysub
  1021.     add.w    d0,$10(a6)
  1022.     move.w    $18(a6),d0
  1023.     cmp.w    $10(a6),d0
  1024.     bgt.s    mt_myok
  1025.     move.w    $18(a6),$10(a6)
  1026.     clr.w    $18(a6)
  1027. mt_myok:move.w    $10(a6),$6(a5)
  1028.     rts
  1029. mt_mysub:
  1030.     sub.w    d0,$10(a6)
  1031.     move.w    $18(a6),d0
  1032.     cmp.w    $10(a6),d0
  1033.     blt.s    mt_myok
  1034.     move.w    $18(a6),$10(a6)
  1035.     clr.w    $18(a6)
  1036.     move.w    $10(a6),$6(a5)
  1037.     rts
  1038.  
  1039. mt_vib:    move.b    $3(a6),d0
  1040.     beq.s    mt_vi
  1041.     move.b    d0,$1a(a6)
  1042.  
  1043. mt_vi:    move.b    $1b(a6),d0
  1044.     lea    mt_sin(pc),a4
  1045.     lsr.w    #$2,d0
  1046.     and.w    #$1f,d0
  1047.     moveq    #0,d2
  1048.     move.b    (a4,d0.w),d2
  1049.     move.b    $1a(a6),d0
  1050.     and.w    #$f,d0
  1051.     mulu    d0,d2
  1052.     lsr.w    #$6,d2
  1053.     move.w    $10(a6),d0
  1054.     tst.b    $1b(a6)
  1055.     bmi.s    mt_vibmin
  1056.     add.w    d2,d0
  1057.     bra.s    mt_vib2
  1058. mt_vibmin:
  1059.     sub.w    d2,d0
  1060. mt_vib2:move.w    d0,$6(a5)
  1061.     move.b    $1a(a6),d0
  1062.     lsr.w    #$2,d0
  1063.     and.w    #$3c,d0
  1064.     add.b    d0,$1b(a6)
  1065.     rts
  1066.  
  1067. mt_nop:    move.w    $10(a6),$6(a5)
  1068.     rts
  1069.  
  1070. mt_checkcom:
  1071.     move.w    $2(a6),d0
  1072.     and.w    #$fff,d0
  1073.     beq.s    mt_nop
  1074.     move.b    $2(a6),d0
  1075.     and.b    #$f,d0
  1076.     tst.b    d0
  1077.     beq    mt_arpeggio
  1078.     cmp.b    #$1,d0
  1079.     beq.s    mt_portup
  1080.     cmp.b    #$2,d0
  1081.     beq    mt_portdown
  1082.     cmp.b    #$3,d0
  1083.     beq    mt_myport
  1084.     cmp.b    #$4,d0
  1085.     beq    mt_vib
  1086.     move.w    $10(a6),$6(a5)
  1087.     cmp.b    #$a,d0
  1088.     beq.s    mt_volslide
  1089.     rts
  1090.  
  1091. mt_volslide:
  1092.     moveq    #0,d0
  1093.     move.b    $3(a6),d0
  1094.     lsr.b    #4,d0
  1095.     tst.b    d0
  1096.     beq.s    mt_voldown
  1097.     add.w    d0,$12(a6)
  1098.     cmp.w    #$40,$12(a6)
  1099.     bmi.s    mt_vol2
  1100.     move.w    #$40,$12(a6)
  1101. mt_vol2:move.w    $12(a6),$8(a5)
  1102.     rts
  1103.  
  1104. mt_voldown:
  1105.     moveq    #0,d0
  1106.     move.b    $3(a6),d0
  1107.     and.b    #$f,d0
  1108.     sub.w    d0,$12(a6)
  1109.     bpl.s    mt_vol3
  1110.     clr.w    $12(a6)
  1111. mt_vol3:move.w    $12(a6),$8(a5)
  1112.     rts
  1113.  
  1114. mt_portup:
  1115.     moveq    #0,d0
  1116.     move.b    $3(a6),d0
  1117.     sub.w    d0,$10(a6)
  1118.     move.w    $10(a6),d0
  1119.     and.w    #$fff,d0
  1120.     cmp.w    #$71,d0
  1121.     bpl.s    mt_por2
  1122.     and.w    #$f000,$10(a6)
  1123.     or.w    #$71,$10(a6)
  1124. mt_por2:move.w    $10(a6),d0
  1125.     and.w    #$fff,d0
  1126.     move.w    d0,$6(a5)
  1127.     rts
  1128.  
  1129. mt_portdown:
  1130.     clr.w    d0
  1131.     move.b    $3(a6),d0
  1132.     add.w    d0,$10(a6)
  1133.     move.w    $10(a6),d0
  1134.     and.w    #$fff,d0
  1135.     cmp.w    #$358,d0
  1136.     bmi.s    mt_por3
  1137.     and.w    #$f000,$10(a6)
  1138.     or.w    #$358,$10(a6)
  1139. mt_por3:move.w    $10(a6),d0
  1140.     and.w    #$fff,d0
  1141.     move.w    d0,$6(a5)
  1142.     rts
  1143.  
  1144. mt_checkcom2:
  1145.     move.b    $2(a6),d0
  1146.     and.b    #$f,d0
  1147.     cmp.b    #$e,d0
  1148.     beq.s    mt_setfilt
  1149.     cmp.b    #$d,d0
  1150.     beq.s    mt_pattbreak
  1151.     cmp.b    #$b,d0
  1152.     beq.s    mt_posjmp
  1153.     cmp.b    #$c,d0
  1154.     beq.s    mt_setvol
  1155.     cmp.b    #$f,d0
  1156.     beq.s    mt_setspeed
  1157.     rts
  1158.  
  1159. mt_setfilt:
  1160.     move.b    $3(a6),d0
  1161.     and.b    #$1,d0
  1162.     asl.b    #$1,d0
  1163.     and.b    #$fd,$bfe001
  1164.     or.b    d0,$bfe001
  1165.     rts
  1166. mt_pattbreak:
  1167.     not.b    mt_break
  1168.     rts
  1169. mt_posjmp:
  1170.     move.b    $3(a6),d0
  1171.     subq.b    #$1,d0
  1172.     move.b    d0,mt_songpos
  1173.     not.b    mt_break
  1174.     rts
  1175. mt_setvol:
  1176.     cmp.b    #$40,$3(a6)
  1177.     ble.s    mt_vol4
  1178.     move.b    #$40,$3(a6)
  1179. mt_vol4:move.b    $3(a6),$8(a5)
  1180.     rts
  1181. mt_setspeed:
  1182.     cmp.b    #$1f,$3(a6)
  1183.     ble.s    mt_sets
  1184.     move.b    #$1f,$3(a6)
  1185. mt_sets:move.b    $3(a6),d0
  1186.     beq.s    mt_rts2
  1187.     move.b    d0,mt_speed
  1188.     clr.b    mt_counter
  1189. mt_rts2:rts
  1190.  
  1191. mt_sin:    dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  1192.     dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  1193.  
  1194. mt_periods:
  1195.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  1196.     dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  1197.     dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  1198.     dc.w $007f,$0078,$0071,$0000,$0000
  1199.  
  1200. mt_speed:    dc.b    $6
  1201. mt_songpos:    dc.b    $0
  1202. mt_pattpos:    dc.w    $0
  1203. mt_counter:    dc.b    $0
  1204.  
  1205. mt_break:    dc.b    $0
  1206. mt_dmacon:    dc.w    $0
  1207.  
  1208. mt_samplestarts:    dcb.l    $1f,0
  1209.  
  1210. mt_voice1:        dcb.w    10,0
  1211.         dc.w    $1
  1212.             dcb.w    3,0
  1213. mt_voice2:        dcb.w    10,0
  1214.         dc.w    $2
  1215.             dcb.w    3,0
  1216. mt_voice3:        dcb.w    10,0
  1217.         dc.w    $4
  1218.             dcb.w    3,0
  1219. mt_voice4:        dcb.w    10,0
  1220.         dc.w    $8
  1221.             dcb.w    3,0
  1222. ******************************************************************************
  1223. pnum    =    43
  1224. ;x,y,z - coord
  1225. points:    dc.w    73,160
  1226.     dc.w    88,145
  1227.     dc.w    88,110
  1228.     dc.w    74,96
  1229.     dc.w    124,96
  1230.     dc.w    134,106
  1231.     dc.w    134,133
  1232.     dc.w    124,143
  1233.     dc.w    105,143
  1234.     dc.w    105,129
  1235.     dc.w    116,129
  1236.     dc.w    120,125
  1237.     dc.w    120,114
  1238.     dc.w    116,110
  1239.     dc.w    102,110
  1240.     dc.w    102,146
  1241.     dc.w    165,146
  1242.     dc.w    169,142
  1243.     dc.w    169,132
  1244.     dc.w    165,128
  1245.     dc.w    147,128
  1246.     dc.w    137,118
  1247.     dc.w    137,106
  1248.     dc.w    147,96
  1249.     dc.w    247,96
  1250.     dc.w    232,111
  1251.     dc.w    232,145
  1252.     dc.w    247,160
  1253.     dc.w    218,160
  1254.     dc.w    218,114
  1255.     dc.w    214,110
  1256.     dc.w    200,110
  1257.     dc.w    200,160
  1258.     dc.w    186,160
  1259.     dc.w    186,110
  1260.     dc.w    155,110
  1261.     dc.w    153,112
  1262.     dc.w    155,114
  1263.     dc.w    173,114
  1264.     dc.w    183,124
  1265.     dc.w    183,150
  1266.     dc.w    173,160
  1267.     dc.w    73,160        
  1268. pend:
  1269. *******************************************************************************
  1270. xybuff:    dcb.w    pnum*2            ;buffer for 2d coords
  1271. *******************************************************************************
  1272. sintab: dc.w      0,572,1144,1715,2286,2856,3425,3993
  1273.         dc.w      4560,5126,5690,6252,6813,7371,7927,8481
  1274.         dc.w      9032,9580,10126,10668,11207,11743,12275,12803
  1275.         dc.w      13328,13848,14364,14876,15383,15886,16383,16876
  1276.         dc.w      17364,17846,18323,18794,19260,19720,20173,20621
  1277.         dc.w      21062,21497,21925,22347,22762,23170,23571,23964
  1278.         dc.w      24351,24730,25101,25465,25821,26169,26509,26841
  1279.         dc.w      27165,27481,27788,28087,28377,28659,28932,29196
  1280.         dc.w      29451,29697,29934,30162,30381,30591,30791,30982
  1281.         dc.w      31163,31335,31498,31650,31794,31927,32051,32165
  1282.         dc.w      32269,32364,32448,32523,32588,32642,32687,32722
  1283.         dc.w      32747,32762,32767,32762,32747,32722,32687,32642
  1284.         dc.w      32587,32523,32448,32364,32269,32165,32051,31927
  1285.         dc.w      31794,31650,31498,31335,31163,30982,30791,30591
  1286.         dc.w      30381,30162,29934,29697,29451,29196,28932,28659
  1287.         dc.w      28377,28087,27788,27481,27165,26841,26509,26169
  1288.         dc.w      25821,25465,25101,24730,24351,23964,23571,23170
  1289.         dc.w      22762,22347,21925,21497,21062,20621,20173,19720
  1290.         dc.w      19260,18794,18323,17846,17364,16876,16384,15886
  1291.         dc.w      15383,14876,14364,13848,13328,12803,12275,11743
  1292.         dc.w      11207,10668,10126,9580,9032,8481,7927,7371
  1293.         dc.w      6813,6252,5690,5126,4560,3993,3425,2856
  1294.         dc.w      2286,1715,1144,572,0,-571,-1143,-1714
  1295.         dc.w      -2285,-2855,-3424,-3993,-4560,-5125,-5689,-6252
  1296.         dc.w      -6812,-7370,-7926,-8480,-9031,-9579,-10125,-10667
  1297.         dc.w      -11206,-11742,-12274,-12802,-13327,-13847,-14363,-14875
  1298.         dc.w      -15382,-15885,-16383,-16876,-17363,-17845,-18322,-18794
  1299.         dc.w      -19259,-19719,-20173,-20620,-21061,-21496,-21925,-22346
  1300.         dc.w      -22761,-23169,-23570,-23964,-24350,-24729,-25100,-25464
  1301.         dc.w      -25820,-26168,-26508,-26840,-27164,-27480,-27787,-28086
  1302.         dc.w      -28376,-28658,-28931,-29195,-29450,-29696,-29933,-30162
  1303.         dc.w      -30380,-30590,-30790,-30981,-31163,-31335,-31497,-31650
  1304.         dc.w      -31793,-31927,-32050,-32164,-32269,-32363,-32448,-32522
  1305.         dc.w      -32587,-32642,-32687,-32722,-32747,-32762,-32767,-32762
  1306.         dc.w      -32747,-32722,-32687,-32642,-32587,-32522,-32448,-32363
  1307.         dc.w      -32269,-32165,-32051,-31927,-31793,-31650,-31497,-31335
  1308.         dc.w      -31163,-30981,-30791,-30590,-30381,-30162,-29934,-29697
  1309.         dc.w      -29451,-29195,-28931,-28658,-28377,-28087,-27788,-27481
  1310.         dc.w      -27165,-26841,-26509,-26169,-25821,-25465,-25101,-24729
  1311.         dc.w      -24351,-23964,-23571,-23170,-22762,-22347,-21925,-21497
  1312.         dc.w      -21062,-20621,-20173,-19720,-19260,-18794,-18323,-17846
  1313.         dc.w      -17364,-16876,-16384,-15886,-15383,-14876,-14364,-13848
  1314.         dc.w      -13328,-12803,-12275,-11743,-11207,-10668,-10126,-9580
  1315.         dc.w      -9032,-8481,-7927,-7371,-6813,-6252,-5690,-5126
  1316.         dc.w      -4560,-3994,-3425,-2856,-2286,-1715,-1144,-572
  1317.         dc.w      0,572,1144,1715,2286,2856,3425,3993
  1318.         dc.w      4560,5126,5690,6252,6813,7371,7927,8481
  1319.         dc.w      9032,9580,10126,10668,11207,11743,12275,12803
  1320.         dc.w      13328,13848,14364,14876,15383,15886,16383,16876
  1321.         dc.w      17364,17846,18323,18794,19260,19720,20173,20621
  1322.         dc.w      21062,21497,21925,22347,22762,23170,23571,23964
  1323.         dc.w      24351,24730,25101,25465,25821,26169,26509,26841
  1324.         dc.w      27165,27481,27788,28087,28377,28659,28932,29196
  1325.         dc.w      29451,29697,29934,30162,30381,30591,30791,30982
  1326.         dc.w      31163,31335,31498,31650,31794,31927,32051,32165
  1327.         dc.w      32269,32364,32448,32523,32588,32642,32687,32722
  1328.         dc.w      32747,32762,32767,32762,32747,32722,32687,32642
  1329. **************************************************************************
  1330. xtabaddr:dc.l    xtab
  1331. xtab:    dc.w    212,212,212,212,212,212,212,211
  1332.     dc.w    211,211,211,211,210,210,210,209
  1333.     dc.w    209,209,208,208,208,207,207,206
  1334.     dc.w    206,205,204,204,203,203,202,201
  1335.     dc.w    201,200,199,199,198,197,196,196
  1336.     dc.w    195,194,193,192,191,191,190,189
  1337.     dc.w    188,187,186,185,184,183,182,181
  1338.     dc.w    180,179,178,177,176,175,174,173
  1339.     dc.w    172,171,170,169,168,167,165,164
  1340.     dc.w    163,162,161,160,159,158,157,156
  1341.     dc.w    155,153,152,151,150,149,148,147
  1342.     dc.w    146,145,144,143,142,141,140,139
  1343.     dc.w    138,137,136,135,134,133,132,131
  1344.     dc.w    130,129,129,128,127,126,125,124
  1345.     dc.w    124,123,122,121,121,120,119,119
  1346.     dc.w    118,117,117,116,116,115,114,114
  1347.     dc.w    113,113,112,112,112,111,111,111
  1348.     dc.w    110,110,110,109,109,109,109,109
  1349.     dc.w    108,108,108,108,108,108,108,108
  1350.     dc.w    108,108,108,108,108,109,109,109
  1351.     dc.w    109,109,110,110,110,111,111,111
  1352.     dc.w    112,112,112,113,113,114,114,115
  1353.     dc.w    116,116,117,117,118,119,119,120
  1354.     dc.w    121,121,122,123,124,124,125,126
  1355.     dc.w    127,128,129,129,130,131,132,133
  1356.     dc.w    134,135,136,137,138,139,140,141
  1357.     dc.w    142,143,144,145,146,147,148,149
  1358.     dc.w    150,151,152,153,155,156,157,158
  1359.     dc.w    159,160,161,162,163,164,165,167
  1360.     dc.w    168,169,170,171,172,173,174,175
  1361.     dc.w    176,177,178,179,180,181,182,183
  1362.     dc.w    184,185,186,187,188,189,190,191
  1363.     dc.w    191,192,193,194,195,196,196,197
  1364.     dc.w    198,199,199,200,201,201,202,203
  1365.     dc.w    203,204,204,205,206,206,207,207
  1366.     dc.w    208,208,208,209,209,209,210,210
  1367.     dc.w    210,211,211,211,211,211,212,212
  1368.     dc.w    212,212,212,212
  1369. xtabend:
  1370. **************************************************************************
  1371. ztabaddr:dc.l    ztab
  1372. ztab:    dc.w    -3023,-3023,-3023,-3022,-3022,-3021,-3020,-3019
  1373.     dc.w    -3018,-3017,-3015,-3013,-3012,-3010,-3008,-3005
  1374.     dc.w    -3003,-3000,-2998,-2995,-2992,-2988,-2985,-2982
  1375.     dc.w    -2978,-2974,-2970,-2966,-2962,-2957,-2953,-2948
  1376.     dc.w    -2943,-2938,-2933,-2928,-2922,-2917,-2911,-2905
  1377.     dc.w    -2899,-2893,-2887,-2881,-2874,-2867,-2861,-2854
  1378.     dc.w    -2847,-2839,-2832,-2825,-2817,-2809,-2801,-2794
  1379.     dc.w    -2785,-2777,-2769,-2761,-2752,-2743,-2735,-2726
  1380.     dc.w    -2717,-2708,-2698,-2689,-2680,-2670,-2660,-2651
  1381.     dc.w    -2641,-2631,-2621,-2611,-2601,-2590,-2580,-2569
  1382.     dc.w    -2559,-2548,-2537,-2527,-2516,-2505,-2494,-2483
  1383.     dc.w    -2471,-2460,-2449,-2437,-2426,-2414,-2403,-2391
  1384.     dc.w    -2379,-2368,-2356,-2344,-2332,-2320,-2308,-2296
  1385.     dc.w    -2284,-2272,-2260,-2247,-2235,-2223,-2210,-2198
  1386.     dc.w    -2186,-2173,-2161,-2148,-2136,-2123,-2111,-2098
  1387.     dc.w    -2086,-2073,-2061,-2048,-2036,-2023,-2010,-1998
  1388.     dc.w    -1985,-1973,-1960,-1948,-1935,-1923,-1910,-1898
  1389.     dc.w    -1885,-1873,-1860,-1848,-1836,-1823,-1811,-1799
  1390.     dc.w    -1787,-1774,-1762,-1750,-1738,-1726,-1714,-1702
  1391.     dc.w    -1690,-1678,-1667,-1655,-1643,-1632,-1620,-1609
  1392.     dc.w    -1597,-1586,-1575,-1563,-1552,-1541,-1530,-1519
  1393.     dc.w    -1509,-1498,-1487,-1477,-1466,-1456,-1445,-1435
  1394.     dc.w    -1425,-1415,-1405,-1395,-1386,-1376,-1366,-1357
  1395.     dc.w    -1348,-1338,-1329,-1320,-1311,-1303,-1294,-1285
  1396.     dc.w    -1277,-1269,-1261,-1252,-1245,-1237,-1229,-1221
  1397.     dc.w    -1214,-1207,-1199,-1192,-1185,-1179,-1172,-1165
  1398.     dc.w    -1159,-1153,-1147,-1141,-1135,-1129,-1124,-1118
  1399.     dc.w    -1113,-1108,-1103,-1098,-1093,-1089,-1084,-1080
  1400.     dc.w    -1076,-1072,-1068,-1064,-1061,-1058,-1054,-1051
  1401.     dc.w    -1048,-1046,-1043,-1041,-1038,-1036,-1034,-1033
  1402.     dc.w    -1031,-1029,-1028,-1027,-1026,-1025,-1024,-1024
  1403.     dc.w    -1023,-1023,-1023,-1023,-1023,-1024,-1024,-1025
  1404.     dc.w    -1026,-1027,-1028,-1029,-1031,-1033,-1034,-1036
  1405.     dc.w    -1038,-1041,-1043,-1046,-1048,-1051,-1054,-1058
  1406.     dc.w    -1061,-1064,-1068,-1072,-1076,-1080,-1084,-1089
  1407.     dc.w    -1093,-1098,-1103,-1108,-1113,-1118,-1124,-1129
  1408.     dc.w    -1135,-1141,-1147,-1153,-1159,-1165,-1172,-1179
  1409.     dc.w    -1185,-1192,-1199,-1207,-1214,-1221,-1229,-1237
  1410.     dc.w    -1245,-1252,-1261,-1269,-1277,-1285,-1294,-1303
  1411.     dc.w    -1311,-1320,-1329,-1338,-1348,-1357,-1366,-1376
  1412.     dc.w    -1386,-1395,-1405,-1415,-1425,-1435,-1445,-1456
  1413.     dc.w    -1466,-1477,-1487,-1498,-1509,-1519,-1530,-1541
  1414.     dc.w    -1552,-1563,-1575,-1586,-1597,-1609,-1620,-1632
  1415.     dc.w    -1643,-1655,-1667,-1678,-1690,-1702,-1714,-1726
  1416.     dc.w    -1738,-1750,-1762,-1774,-1786,-1799,-1811,-1823
  1417.     dc.w    -1836,-1848,-1860,-1873,-1885,-1898,-1910,-1923
  1418.     dc.w    -1935,-1948,-1960,-1973,-1985,-1998,-2010,-2023
  1419.     dc.w    -2036,-2048,-2061,-2073,-2086,-2098,-2111,-2123
  1420.     dc.w    -2136,-2148,-2161,-2173,-2186,-2198,-2210,-2223
  1421.     dc.w    -2235,-2247,-2259,-2272,-2284,-2296,-2308,-2320
  1422.     dc.w    -2332,-2344,-2356,-2368,-2379,-2391,-2403,-2414
  1423.     dc.w    -2426,-2437,-2449,-2460,-2471,-2483,-2494,-2505
  1424.     dc.w    -2516,-2527,-2537,-2548,-2559,-2569,-2580,-2590
  1425.     dc.w    -2601,-2611,-2621,-2631,-2641,-2651,-2660,-2670
  1426.     dc.w    -2680,-2689,-2698,-2708,-2717,-2726,-2735,-2743
  1427.     dc.w    -2752,-2761,-2769,-2777,-2785,-2794,-2801,-2809
  1428.     dc.w    -2817,-2825,-2832,-2839,-2847,-2854,-2861,-2867
  1429.     dc.w    -2874,-2881,-2887,-2893,-2899,-2905,-2911,-2917
  1430.     dc.w    -2922,-2928,-2933,-2938,-2943,-2948,-2953,-2957
  1431.     dc.w    -2962,-2966,-2970,-2974,-2978,-2982,-2985,-2988
  1432.     dc.w    -2992,-2995,-2998,-3000,-3003,-3005,-3008,-3010
  1433.     dc.w    -3012,-3013,-3015,-3017,-3018,-3019,-3020,-3021
  1434.     dc.w    -3022,-3022,-3023,-3023
  1435. ztabend:
  1436. **************************************************************************
  1437. angxtabaddr:dc.l    angtab
  1438. angytabaddr:dc.l    angtab+250
  1439. angztabaddr:dc.l    angtab
  1440. **************************************************************************
  1441. angtab:    dc.w    360,360,360,360,360,360,360,360
  1442.     dc.w    359,359,359,359,359,358,358,358
  1443.     dc.w    357,357,357,356,356,356,355,355
  1444.     dc.w    354,354,353,353,352,352,351,351
  1445.     dc.w    350,349,349,348,347,347,346,345
  1446.     dc.w    344,344,343,342,341,340,340,339
  1447.     dc.w    338,337,336,335,334,333,332,331
  1448.     dc.w    330,329,328,327,326,325,323,322
  1449.     dc.w    321,320,319,317,316,315,314,312
  1450.     dc.w    311,310,309,307,306,305,303,302
  1451.     dc.w    300,299,298,296,295,293,292,290
  1452.     dc.w    289,287,286,284,283,281,280,278
  1453.     dc.w    276,275,273,272,270,268,267,265
  1454.     dc.w    263,262,260,258,257,255,253,251
  1455.     dc.w    250,248,246,245,243,241,239,237
  1456.     dc.w    236,234,232,230,228,227,225,223
  1457.     dc.w    221,219,217,216,214,212,210,208
  1458.     dc.w    206,204,203,201,199,197,195,193
  1459.     dc.w    191,189,188,186,184,182,180,178
  1460.     dc.w    176,174,172,171,169,167,165,163
  1461.     dc.w    161,159,157,156,154,152,150,148
  1462.     dc.w    146,144,143,141,139,137,135,133
  1463.     dc.w    132,130,128,126,124,123,121,119
  1464.     dc.w    117,115,114,112,110,109,107,105
  1465.     dc.w    103,102,100,98,97,95,93,92
  1466.     dc.w    90,88,87,85,84,82,80,79
  1467.     dc.w    77,76,74,73,71,70,68,67
  1468.     dc.w    65,64,62,61,60,58,57,55
  1469.     dc.w    54,53,51,50,49,48,46,45
  1470.     dc.w    44,43,41,40,39,38,37,35
  1471.     dc.w    34,33,32,31,30,29,28,27
  1472.     dc.w    26,25,24,23,22,21,20,20
  1473.     dc.w    19,18,17,16,16,15,14,13
  1474.     dc.w    13,12,11,11,10,9,9,8
  1475.     dc.w    8,7,7,6,6,5,5,4
  1476.     dc.w    4,4,3,3,3,2,2,2
  1477.     dc.w    1,1,1,1,1,0,0,0
  1478.     dc.w    0,0,0,0,0,0,0,0
  1479.     dc.w    0,0,0,0,1,1,1,1
  1480.     dc.w    1,2,2,2,3,3,3,4
  1481.     dc.w    4,4,5,5,6,6,7,7
  1482.     dc.w    8,8,9,9,10,11,11,12
  1483.     dc.w    13,13,14,15,16,16,17,18
  1484.     dc.w    19,20,20,21,22,23,24,25
  1485.     dc.w    26,27,28,29,30,31,32,33
  1486.     dc.w    34,35,37,38,39,40,41,43
  1487.     dc.w    44,45,46,48,49,50,51,53
  1488.     dc.w    54,55,57,58,60,61,62,64
  1489.     dc.w    65,67,68,70,71,73,74,76
  1490.     dc.w    77,79,80,82,84,85,87,88
  1491.     dc.w    90,92,93,95,97,98,100,102
  1492.     dc.w    103,105,107,109,110,112,114,115
  1493.     dc.w    117,119,121,123,124,126,128,130
  1494.     dc.w    132,133,135,137,139,141,143,144
  1495.     dc.w    146,148,150,152,154,156,157,159
  1496.     dc.w    161,163,165,167,169,171,172,174
  1497.     dc.w    176,178,180,182,184,186,188,189
  1498.     dc.w    191,193,195,197,199,201,203,204
  1499.     dc.w    206,208,210,212,214,216,217,219
  1500.     dc.w    221,223,225,227,228,230,232,234
  1501.     dc.w    236,237,239,241,243,245,246,248
  1502.     dc.w    250,251,253,255,257,258,260,262
  1503.     dc.w    263,265,267,268,270,272,273,275
  1504.     dc.w    276,278,280,281,283,284,286,287
  1505.     dc.w    289,290,292,293,295,296,298,299
  1506.     dc.w    300,302,303,305,306,307,309,310
  1507.     dc.w    311,312,314,315,316,317,319,320
  1508.     dc.w    321,322,323,325,326,327,328,329
  1509.     dc.w    330,331,332,333,334,335,336,337
  1510.     dc.w    338,339,340,340,341,342,343,344
  1511.     dc.w    344,345,346,347,347,348,349,349
  1512.     dc.w    350,351,351,352,352,353,353,354
  1513.     dc.w    354,355,355,356,356,356,357,357
  1514.     dc.w    357,358,358,358,359,359,359,359
  1515.     dc.w    359,360,360,360,360,360,360,360
  1516. angtabend:
  1517. **************************************************************************
  1518. chartab:dc.l    char2+00,char2+01,char2+02,char2+03,char2+04,char2+05
  1519.     dc.l    char2+06,char2+07,char2+08,char2+09,char2+10,char2+11
  1520.     dc.l    char2+12,char2+13,char2+14,char2+15,char2+16,char2+17
  1521.     dc.l    char2+18,char2+19,char2+20,char2+21,char2+22,char2+23
  1522.     dc.l    char2+24,char2+25,char2+26,char2+27,char2+28,char2+29
  1523.     dc.l    char2+30,char2+31,char2+32,char2+33,char2+34,char2+35
  1524.     dc.l    char2+36,char2+37,char2+38,char2+39
  1525.     dc.l    char2+(40*5)+00,char2+(40*5)+01,char2+(40*5)+02
  1526.     dc.l    char2+(40*5)+03,char2+(40*5)+04,char2+(40*5)+05
  1527.     dc.l    char2+(40*5)+06,char2+(40*5)+07,char2+(40*5)+08
  1528.     dc.l    char2+(40*5)+09,char2+(40*5)+10,char2+(40*5)+11
  1529.     dc.l    char2+(40*5)+12    ;space
  1530. **************************************************************************
  1531. ascii:    dc.b    "abcdefghijklmnopqrstuvwxyz!?:.1234567890(),@$#%-+*`= "
  1532.     even
  1533. **************************************************************************
  1534. tophsize    =    6        ;nr. of lines over filenames
  1535. filenum        =    5        ;number of chooseable files
  1536. bothsize    =    24         ;nr. of lines under filenames
  1537. allsize        =    tophsize+filenum+bothsize
  1538. **************************************************************************
  1539. text:    dc.b    " --------------------------------------------------- "    ;t
  1540.             dc.b    "    hello and welcome to a pack series from design   "    ;o
  1541.     dc.b    "                         called :                    "    ;p
  1542.     dc.b    "                   crap house no.14 !!               "    ;t
  1543.     dc.b    "   released at the very end of week 10 of 1992 !!!   "    ;x
  1544.     dc.b    " --------------------------------------------------- "    ;t
  1545.     dc.b    "   jointro.................................rawhide   "
  1546.      dc.b    "   the evil eye..........................symbiosis   "
  1547.         dc.b    "   party invitation..............trsi and majic 12   "
  1548.     dc.b    "   meeretro.........................the dark demon   "
  1549.         dc.b    "   circle madness...........................origin   "
  1550.      dc.b    " --------------------------------------------------- "
  1551.     dc.b    " please vote for our pax in every chart you can get! "
  1552.         dc.b    " --------------------------------------------------- "
  1553.     dc.b    "                                                     "
  1554.     dc.b    "      contact me for swapping the latest under:      "
  1555.     dc.b    "             (also for membership !!!!)              "
  1556.     dc.b    "                                                     "    
  1557.     dc.b    "                   plk 158051 e                      "
  1558.     dc.b    "                   2914 barssel                      "
  1559.     dc.b    "                   west germany                      "
  1560.     dc.b    "                                                     "
  1561.     dc.b    " --------------------------------------------------- "
  1562.     dc.b    " coding done by...............................wigwam "
  1563.     dc.b    " artwork done by...............................flite "
  1564.     dc.b    " music by...................................lonestar "
  1565.     dc.b    " --------------------------------------------------- "
  1566.         DC.B    "                                                     "
  1567.         DC.B    "        for membership or just for fun call :        "
  1568.         dc.b    "                                                     "
  1569.         dc.b    "       doom         +49(0)44991318     -gordon-      "
  1570.         dc.b    "                          or                         "
  1571.         dc.b    "       einstein     +49(0)524134865    -florian-     "
  1572.         dc.b    "                          or                         "        
  1573.         dc.b    "       agressor     +49(0)60635111     -daniel-      "
  1574.  
  1575.  
  1576.  
  1577. textend:even
  1578. **************************************************************************
  1579. filetab:dc.l    file01,file02,file03,file04,file05,file06,file07,file08
  1580.     dc.l    file09,file10,file11,file12,file13,file14,file15,file16
  1581.     dc.l    file17,file18,file19,file20,file21,file22,file23,file24
  1582.     dc.l    file25,file26,file27,file28,file29,file30
  1583. **************************************************************************
  1584. ;insert file names here ascii + end mark (0)
  1585. **************************************************************************
  1586. file01:    dc.b    "design01",0
  1587. file02:    dc.b    "design02",0
  1588. file03:    dc.b    "design03",0
  1589. file04:    dc.b    "design04",0
  1590. file05:    dc.b    "design05",0
  1591. file06:    dc.b    "design06",0
  1592. file07:    dc.b    0,0
  1593. file08:    dc.b    0,0
  1594. file09:    dc.b    0,0
  1595. file10:    dc.b    0,0
  1596. file11:    dc.b    0,0
  1597. file12:    dc.b    0,0
  1598. file13:    dc.b    0,0
  1599. file14:    dc.b    0,0
  1600. file15:    dc.b    0,0
  1601. file16:    dc.b    0,0
  1602. file17:    dc.b    0,0
  1603. file18:    dc.b    0,0
  1604. file19:    dc.b    0,0
  1605. file20:    dc.b    0,0
  1606. file21:    dc.b    0,0
  1607. file22:    dc.b    0,0
  1608. file23:    dc.b    0,0
  1609. file24:    dc.b    0,0
  1610. file25:    dc.b    0,0
  1611. file26:    dc.b    0,0
  1612. file27:    dc.b    0,0
  1613. file28:    dc.b    0,0
  1614. file29:    dc.b    0,0
  1615. file30:    dc.b    0,0
  1616.     even
  1617. **************************************************************************
  1618. oldint:    dc.l    0
  1619. gfxname:dc.b    "graphics.library",0,0
  1620. dosname:dc.b    "dos.library",0
  1621. dosbase:dc.l    0
  1622. *************************************************************************
  1623. *************************************************************************
  1624. cop:    dc.w    $e0,bpla1/$10000,$e2,bpla1&$ffff
  1625. hib1:    dc.w    $e4,bplb1/$10000,$e6,bplb2&$ffff
  1626.     dc.w    $e8,bpla2/$10000,$ea,bpla2&$ffff
  1627.     dc.w    $008e,$2420,$0090,$30c1,$0092,$0038,$0094,$00d0
  1628.     dc.w    $0100,$3200,$108,40*1,$10a,0
  1629. *************************************************************************
  1630. spr0:    dc.w    $0120,0,$0122,0        ;spr 0
  1631.     dc.w    $0128,0,$012a,0        ;spr 2
  1632.     dc.w    $0130,0,$0132,0        ;spr 4
  1633.     dc.w    $0138,0,$013a,0        ;spr 6    ;needed for 4 levels
  1634.     dc.w    $0124,0,$0126,0        ;spr 1
  1635.     dc.w    $012c,0,$012e,0        ;spr 3
  1636.     dc.w    $0134,0,$0136,0        ;spr 5
  1637.     dc.w    $013c,0,$013e,0        ;spr 7
  1638.     dc.l    $01040000            ;playfield before sprites
  1639. *************************************************************************
  1640.     dc.l    $01a20012    ;Ebene 1
  1641.     dc.l    $01a40025    
  1642.     dc.l    $01a60129    
  1643.     dc.l    $01aa0012    ;Ebene 2
  1644.     dc.l    $01ac0125    
  1645.     dc.l    $01ae0229        
  1646.     dc.l    $01b20134    ;Ebene 3
  1647.     dc.l    $01b40238    
  1648.     dc.l    $01b6033c    
  1649.     dc.l    $01ba0159    ;Ebene 4
  1650.     dc.l    $01bc025c    
  1651.     dc.l    $01be035f    
  1652. *************************************************************************
  1653.     dc.l    $01800759    ;background color
  1654.     dc.l    $0182097b    ;logo color01
  1655.     dc.l    $01840648    ;vector color
  1656.     dc.l    $0186097b    ;logo & vector mixed 1
  1657.     dc.l    $01880759    ;logo color 02
  1658.     dc.l    $018a0436    ;logo color 03
  1659.     dc.l    $018c0759    ;logo & vector mixed 02
  1660.     dc.l    $018e0436    ;logo & vector mixed 03
  1661. *************************************************************************
  1662.     dc.l    $600ffffe
  1663. *************************************************************************
  1664. hia1:    dc.w    $e0,(bpla1+80*60)/$10000,$e2,(bpla1+80*60)&$ffff
  1665. hia2:    dc.w    $e8,(bpla2+80*60)/$10000,$ea,(bpla2+80*60)&$ffff
  1666. *************************************************************************
  1667.     dc.l    $01820759,$01860759
  1668.     dc.l    $610ffffe,$01820759,$01860759
  1669.     dc.l    $620ffffe,$0182086a,$0186086a
  1670.     dc.l    $630ffffe,$0182097b,$0186097b
  1671.     dc.l    $640ffffe,$01820a8c,$01860a8c
  1672.     dc.l    $650ffffe,$01820b9d,$01860b9d
  1673.     dc.l    $660ffffe,$01820cae,$01860cae
  1674.     dc.l    $670ffffe,$01820dbf,$01860dbf
  1675.     dc.l    $680ffffe,$01820ecf,$01860ecf
  1676.     dc.l    $690ffffe,$01820fdf,$01860fdf
  1677.     dc.l    $6a0ffffe,$01820fef,$01860fef
  1678.     dc.l    $6a0ffffe,$01820fff,$01860fff
  1679.     dc.l    $a10ffffe,$01800325,$01840214
  1680.     dc.l    $a20ffffe,$01840103
  1681. *************************************************************************
  1682. col1:    dc.l    $01820fff    ;text color
  1683.     dc.l    $01800102
  1684. col2:    dc.l    $01860fff    ;text & vector mixed 1
  1685.     dc.l    $a70ffffe
  1686.     dc.l    $0180078c,$0184056a
  1687.     dc.l    $01820fff
  1688.     dc.l    $01860fff    ;restore colors
  1689. *************************************************************************
  1690.     dc.l    $a80ffffe,$0180056a,$01840459
  1691.     dc.l    $e50ffffe,$01820fff,$01860fff
  1692.     dc.l    $e60ffffe,$01820eff,$01860eff
  1693.     dc.l    $e70ffffe,$01820def,$01860def
  1694.     dc.l    $e80ffffe,$01820cdf,$01860cdf
  1695.     dc.l    $e90ffffe,$01820bcf,$01860bcf
  1696.     dc.l    $ea0ffffe,$01820abf,$01860abf
  1697.     dc.l    $eb0ffffe,$018209ae,$018609ae
  1698.     dc.l    $ec0ffffe,$0182089d,$0186089d
  1699.     dc.l    $ed0ffffe,$0182078c,$0186078c
  1700.     dc.l    $ee0ffffe,$0182067b,$0186067b
  1701.     dc.l    $ef0ffffe,$0182056a,$0186056a
  1702.     dc.l    $f00ffffe,$01800237,$01840126,$01820237,$01860237
  1703.     dc.l    $f10ffffe,$01800000,$01840000,$01820000,$01860000
  1704. *************************************************************************
  1705.     dc.w    $e0,bplc1/$10000,$e2,bplc1&$ffff
  1706.     dc.w    $e4,bplc2/$10000,$e6,bplc2&$ffff
  1707.     dc.w    $e8,bplc3/$10000,$ea,bplc3&$ffff
  1708.     dc.w    $ec,bplc4/$10000,$ee,(bplc4+4)&$ffff    ;4 bpls raw/blit
  1709.     dc.w    $0100,$4200,$0108,40*3,$010a,40*3    ;typer bpls
  1710. *************************************************************************
  1711.     dc.w    $0182,$0fff,$0184,$0dff,$0186,$0def
  1712.     dc.w    $0188,$0cce,$018a,$0abd,$018c,$099c,$018e,$088b
  1713.     dc.w    $0190,$077a,$0192,$0668,$0194,$0657,$0196,$0546
  1714.     dc.w    $0198,$0435,$019a,$0424,$019c,$0323,$019e,$0212    ;char colors
  1715. *************************************************************************
  1716.     dc.l    $ffdffffe
  1717. *************************************************************************
  1718.     dc.l    $1d0ffffe,$01000000,$0180078c
  1719.     dc.l    $1e0ffffe,$0180056a
  1720.     dc.l    $2d0ffffe,$01800237
  1721.     dc.l    $2e0ffffe,$01800000
  1722.     dc.l    $01000000
  1723.     dc.l    $009c8010        ;enable copper int.
  1724. clend:    dc.l    $fffffffe
  1725. *************************************************************************
  1726.  
  1727. logo:    incbin    "ram:dsn-logo.blt"
  1728. char:    incbin    "ram:char688*19.blt"
  1729. masks:    incbin    "ram:masks.blt"
  1730. char2:    incbin    "ram:font2.raw"
  1731. mdata:    ;incbin    "ram:mod.module"
  1732.  
  1733. *************************************************************************
  1734.